import pickle
import pandas as pd
import quandl
import matplotlib.pyplot as plt
from matplotlib import style
import numpy as np
from statistics import mean

style.use("seaborn-dark-palette")

ax1 = plt.subplot(2, 1, 1)
ax2 = plt.subplot(2, 1, 2, sharex=ax1)


def create_labels(cur_hpi, fut_hpi):
    if fut_hpi > cur_hpi:
        return 1
    else:
        return 0


def moving_average(values):
    return mean(values)


benchmark = pd.read_pickle(
    "us_pct.pickle"
)  # us overall housing price index percentage change
HPI = pd.read_pickle(
    "HPI_complete.pickle"
)  # all of the state data, thirty year mortgage, unemployment rate, GDP, SP500
HPI = HPI.join(benchmark["United States"])
# all in percentage change since the start of the data (1975-01-01)

HPI.dropna(inplace=True)

housing_pct = HPI.pct_change()
housing_pct.replace([np.inf, -np.inf], np.nan, inplace=True)

housing_pct["US_HPI_future"] = housing_pct["United States"].shift(-1)
housing_pct.dropna(inplace=True)

housing_pct["label"] = list(
    map(create_labels, housing_pct["United States"], housing_pct["US_HPI_future"])
)

# housing_pct['ma_apply_example'] = pd.rolling_apply(housing_pct['M30'], 10, moving_average)
housing_pct["ma_apply_example"] = (
    housing_pct["M30"].rolling(window=10).apply(moving_average)
)
print(housing_pct.tail())

# state_HPI_M30 = HPI_data.join(HPI['M30']) # fifty states plus mortgage data
# print(state_HPI_M30.corr().describe().tail())
